package com.explorati.LeetCode283.movezero;

public class MoveZero1 {

	public static void moveZeroes(int[] nums) {
		// nums中，[0..i]均为非0元素
		int i = 0;
		// 遍历到第j个元素时，保证[0...j]中的非零元素都按照原来顺序排列在[0...i)中，而[i...j]为0
		for (int j = 0; j < nums.length; j++) {
			if (nums[j] != 0) {
				if (i != j) {
					swap(nums, i++, j);
				} else {
					i++;
				}
			}
		}
	}

	private static void swap(int[] nums, int i, int j) {
		int temp = nums[i];
		nums[i] = nums[j];
		nums[j] = temp;
	}

	public static void main(String[] args) {
		int[] arr = { 0, 1, 3, 0, 5 };
		moveZeroes(arr);

		for (int i : arr) {
			System.out.print(i + "  ");
		}
	}
}
